【AlphaGo Zero 核心技术-深度强化学习教程笔记08】整合学习与规划
点击上方“专知”关注获取更多AI知识!
【导读】Google DeepMind在Nature上发表最新论文,介绍了迄今最强最新的版本AlphaGo Zero,不使用人类先验知识,使用纯强化学习,将价值网络和策略网络整合为一个架构,3天训练后就以100比0击败了上一版本的AlphaGo。Alpha Zero的背后核心技术是深度强化学习,为此,专知有幸邀请到叶强博士根据DeepMind AlphaGo的研究人员David Silver《深度强化学习》视频公开课进行创作的中文学习笔记,在专知发布推荐给大家!(关注专知公众号,获取强化学习pdf资料,详情文章末尾查看!)
叶博士创作的David Silver的《强化学习》学习笔记包括以下:
笔记序言:【教程】AlphaGo Zero 核心技术 - David Silver深度强化学习课程中文学习笔记
《强化学习》第八讲 整合学习与规划
《强化学习》第九讲 探索与利用
以及包括也叶博士独家创作的强化学习实践系列!
强化学习实践一 迭代法评估4*4方格世界下的随机策略
强化学习实践二 理解gym的建模思想
强化学习实践三 编写通用的格子世界环境类
强化学习实践四 Agent类和SARSA算法实现
强化学习实践五 SARSA(λ)算法实现
强化学习实践六 给Agent添加记忆功能
强化学习实践七 DQN的实现
今天《强化学习》第八讲 整合学习与规划;
本课程之前所有的内容都没有提及到个体如何构建一个模拟环境的模型,自然也没有讲解个体构建一个模拟环境的模型对于解决MDP问题有何帮助。本讲即关注这两个问题。通过构建一个模型,个体具备了一定程度的独立思考能力,即在与环境发生实际交互之前思考各种可能的行为其对能带给环境及自身的改变。通过个体的思考以及联合其与环境的实际交互经验,个体在解决大规模MDP问题时可以取得更好的结果。本讲涉及的内容多属于宏观架构之类,具体涉及到的数学理论并不多。但准确理解这些架构的设计思想还是比较有挑战性的。
简介 Introduction
本讲主要讲解如何从经历中直接学习模型,如何构建一个模型,如何基于模型来进行“规划”,在次基础上将“学习”和“规划”整合起来形成Dyna算法,详细解释了Dyna算法的流程和特点。依赖于模型,个体可以通过模拟产生一系列虚拟的Episodes,通过使用基于模拟的搜索方法,特别是蒙特卡罗树搜索方法,找到了一条解决诸如围棋等大规模MDP问题的有效可行的算法。本讲指出解决这类问题的关键在于“前向搜索”和“采样”,通过将基于模拟的前向搜索与各种不依赖模型的强化学习算法结合,衍生出多个用来解决类似大规模问题的切实可行的算法,如:Dyna-2算法之类。
基于模型的强化学习 Model Based Reinforcement Learning
下图比较好的说明了模型学习在整个RL学习中的位置和作用:
从经历开始,学习到一个个体对于环境的描述机制,也就是模型。然后个体通过与模型打交道而不是真正的与实际环境发生交互,进行价值函数或策略的更新,也就是解决这个MDP。随后使用这些价值函数或策略来与环境实际发生交互,获得更多的经历。这里特别要强调的是所谓的“规划”特指并没有实际发生的事情,个体与模型之间的交互指的是从个体建立的模型中采样,模拟环境能够做的事情:确定个体的下一时刻状态和奖励。
基于模型的学习的优点是:当学习价值函数或策略变得很困难的时候,学习模型可能是一条不错的途径,像下棋这类活动,模型是相对直接的,相当于就是游戏规则。另外一个优点是:可以使用监督式学习方法来获得模型,可单步学习(稍后详细展开)。还有一个优点是:模型能够从一个方面对个体理解环境提供帮助,通过模型,个体不再局限于如何最大化奖励本身,还能在一定程度上了解采取的动作为什么是好的或者不好,也就是具备一定的推理能力。
当然基于模型的学习也有一些缺点,这是因为在学习模型的过程中,模型其实是一个个体对环境运行机制的描述,不完全是真实的环境运行机制,因此存在这一定程度的近似。另外当使用一个近似的模型去进行价值函数或策略函数的学习时,又会引入一次近似。因此会带来双重的近似误差,有时候这会带来较为严重的错误。因此尽可能要扬长避短。
模型的数学描述
模型 M 是一个
其中假定:状态空间S和行为空间A是已知的。
可以看出,模型
通常我们需要如下的假设,即状态转移函数和奖励函数是条件独立的:
用监督式学习来构建模型
目标:从经历
监督式学习的训练集:
从s,a学习r的过程是一个回归问题(regression problem)
从s,a学习s' 的过程是一个密度估计问题(density estimation problem)
训练方法:
选择一个损失函数,比如均方差,KL 散度等,优化参数
在使用监督学习算法构建模型时,我们假定状态空间是已知的。类似的,如果我们掌握一个使用各种特征表示的状态空间,对于准确的构建模型将更加有利,但得到状态空间的各种特征的表示是一个难度更大的过程。
根据使用的算法不同,可以有如下多种模型:查表式(Table lookup Model)、线性期望模型(Linear Expectation Model)、线性高斯模型(Linear Gaussian Model)、高斯决策模型(Gaussian Process Model)、和深信度神经网络模型(Deep Belief Network Model)等。下文主要以查表模型来解释模型的构建。
查表模型
通过经历得到各状态行为转移概率和奖励,把这些数据存入表中,使用时直接检索。状态转移概率和奖励计算方法如下:
不过实际应用时,略有差别。在学习的每一步(time-step),记录如下的状态转换(经历片段):
从模型采样构建虚拟经历时,从tuples中随机选择符合
举个例子来解释:
示例——AB状态
这是一个之前(第四讲)提到过的例子。通过对实际经历的分析,我们得到如下的状态转化图及奖励:
这相当于我们利用经历构建了一个查表模型。随后我们可以使用这个模型,进行虚拟采样,从而进行“规划”。
注:在学习模型时,不是以Episode为最小学习单位的,而是以时间步(time-step)为单位,一次学习一个状态转换。
利用模型进行“规划”
理解了模型的学习,“规划”就很简单了,规划的过程相当于解决一个MDP的过程。即给定一个模型
我们可以使用之前介绍过的价值迭代,策略迭代方法;也可以使用树搜索方法(Tree Search)
基于采样的规划
在利用模型进行解决MDP过程中,从如何从模型中虚拟采样呢?模型存储的是各种状态行为对转移至新的状态的转移概率,在实际规划过程中,模型不是把这些概率值传递给迭代过程,而仅仅是利用模型来产生一个虚拟的状态转换,即一个时间步长的虚拟经历:
有了这些虚拟采样,随后使用不基于模型的强化学习方法来学习得到价值或策略函数。这种虚拟采样的方法通常很有效。
同样可以用AB状态的例子来解释虚拟采样解决MDP的过程:
示例——AB状态
这个MDP问题的模型,可以表示为中间部分的状态转化图,它是根据左侧的真实经历得到的。右侧的采样(虚拟)经历是根据模型产生的可能结果之一。可以看到采样经历和真实经历不完全一样。在这种情况下,使用蒙特卡罗学习方法且衰减系数
不精确的模型
由于实际经历的不足或者一些无法避免的缺陷,我们通过实际经历学习得到的模型不可能是完美的模型:
基于模型的强化学习的能力是受到从近似的
基于模型的学习适用于连续变量的状态和行为空间。
架构整合 Integrated Architectures
本节将把基于模型的学习和不基于模型的学习结合起来,形成一个整合的架构,利用两者的优点来解决复杂问题。当构建了一个环境的模型后,个体可以有两种经历来源:实际经历(real experience)、模拟经历(simulated experience)。
实际经历:
模拟经历:
注:基于模拟的经历不能够用来指导个体选择合适探索方式。关于“探索”将在后一讲详细介绍。
基于这个思想,我们可以把不基于模型的真实经历和基于模型采样得到的模拟经历结合起来,提出一种新的架构:
Dyna 算法
Dyna算法从实际经历中学习得到模型,然后联合使用实际经历和模拟经历一边学习,一边规划更新价值和(或)策略函数:
Dyna-Q算法流程如下:
这个算法赋予了个体在与实际环境进行交互式时有一段时间用来思考的能力。其中的步骤:a,b,c,d,和e都是从实际经历中学习,d过程是学习价值函数,e过程是学习模型。
在f步,给以个体一定时间(或次数)的思考。在思考环节,个体将使用模型,在之前观测过的状态空间中随机采样一个状态,同时从这个状态下曾经使用过的行为中随机选择一个行为,将两者带入模型得到新的状态和奖励,依据这个来再次更新行为价值和函数。
个人体会:这是不是有点像监督学习里的使用假数据来丰富训练数据集?
下文列举了几个格子世界的例子解释了这种算法的优势。下图比较了在Dyna算法中一次实际经历期间采取不同步数的规划时的个体表现。横坐标是Episode序号,纵坐标是特定Episode所花费的步数。可以看出,当直接使用实际经历时,个体在早期完成一个Episode需要花费较多步数,而使用5步或50步思考步数时,个体完成一个Episode与环境发生的实际交互的步数要少很多。不过到了后期,基本上就没什么差别了。
下面的例子模拟了某时刻(虚线所示)环境发生了改变,变得更加困难,此时使用Dyna-Q算法在经历过一段时间的平台期后又找到了最优解决方案。在平台期,模型持续的给以个体原先的策略,也就是错误的策略,但个体通过与实际的交互仍然能够找到最优方案。
下面的例子则模拟了环境在某时刻变得简单些时,使用Dyn-Q算法的表现:
上二个例子表明,Dyn-Q算法赋予了个体一定的应对环境变化的能力,当环境发生一定改变时,个体一方面可以利用模型,一方面也可以通过与实际环境的交互来重新构建模型。
注:上2个示例图中的Q+算法与Q的差别体现在:Q+算法鼓励探索,给以探索额外的奖励。
到目前为止,我们尝试构建一个模型,然后联合实际经历与模拟经历来解决MDP问题。下文要讲的内容则是从一个不同的角度来思考“规划”:我们将专注于规划本身,如何高效地进行规划,把这些想法应用到基于模拟的搜索算法中,从模拟的经历中进行采样,进行较深层次的采样规划,来看看是否能够得到一些艺术级表现的搜索规划类算法。我们使用的关键思想是:通过采样来进行一定步数的前向搜索,也就是“基于模拟的搜索”。
基于模拟的搜索 Simulation-Based Search
在讲解基于模拟的搜索前,先回顾下前向搜索(Forward Search)算法。该算法通过往前看来采取最好的行为。这种算法把当前状态St作为根节点构建了一个搜索树(Search Tree),使用MDP模型进行前向搜索。前向搜索不需要解决整个MDP,而仅仅需要构建一个从当前状态开始与眼前的未来相关的次级(子)MDP。这相当于一个登山运动员的登山问题,在某一个时刻,他只需要关注当前位置(状态)时应该采取什么样的行为才能更有利于登山(或者下撤),而不需要考虑第二天中饭该吃什么,那是登顶并安全撤退后才要考虑的事情。
注:图中绿色方格节点指的是终止状态
基于模拟的搜索(Simulation-Based Search) 是前向搜索的一种形式,它从当前时刻开始,使用基于模拟采样的规划,构建一个关注与短期未来的前向搜索树,把这个搜索树作为一个学习资源,然后使用Model Free的强化学习来寻找最优策略。
具体是这样的:
从当前时刻t开始,从模型或者从实际经历中进行采样,形成从当前状态开始到终止状态
有了这些Episode资源,我们可以使用Model-Free的强化学习方法,如果我们使用蒙特卡罗控制,那么这个算法可以称作蒙特卡罗搜索(Monte-Carlo Search),如果使用Sarsa方法,则称为TD搜索(TD Search)。
简单蒙特卡罗搜索 Simple Monte-Carlo Search
具体步骤如下:
1. 给定一个模型
2. 针对行为空间里的每一个行为
a) 从这个当前(实际)状态
b) 使用平均收获(蒙特卡罗评估)来评估当前行为 a的行为价值
3.选择一个有最大
上面就是简单模特卡洛搜索算法的主要思想,它是基于一个特定的模拟策略的。不过如果这个模拟策略本身不是很好的话,那么基于该策略下产生的行为
蒙特卡罗树搜索 Monte-Carlo Tree Search
评估 Evaluation
蒙特卡罗树搜索是一种可以高效解决复杂问题的搜索方法。它使用当前的模拟策略构建一个基于当前状态st的搜索树。和简单蒙特卡罗搜索不一样的是,蒙特卡罗树搜索方法将评估整个搜索树中每一个状态行为对的价值,并在此基础上改善我们基于模拟采样的策略。
具体做法如下:
给定一个模型
从当前状态
开始,使用当前的模拟策略 ,模拟生成 K个Episodes: 构建一个包括所有个体经历过的状态和行为的搜索树
对于搜索树种每一个状态行为对 (s,a),计算从该(s,a)开始的所有完整Episode收获的平均值,以此来估算该状态行为对的价值 Q(s,a)
当搜索过程结束,也就是所有 s,a的Q值得到更新后,选择搜索树中状态
对应最大 Q值的行为:
蒙特卡罗树搜索一个特点是在构建这个搜索树的过程中,更新了搜索树内状态行为对的价值,积累了丰富的信息,利用这些信息可以更新模拟策略,使得模拟策略得到改进。
模拟 Simulation
每一次模拟结束,策略将得到改进,其方法基本就是早期我们讲过的策略优化方法:选取能够最大化Q值的行为。有一个区别就是,搜索树并不包括整个状态行为对空间的Q值,因此在改进策略时要分情况对待:
1.树内确定性策略(Tree Policy):对于在搜索树中存在的状态行为对,策略的更新倾向于最大化Q值,这部分策略随着模拟的进行是可以得到持续改进的; 树2 2.外默认策略(Default Policy):对于搜索树中不包括的状态,可以使用固定的随机策略。
也就是说,每一次从当前状态到终止状态的模拟都包括两个阶段:状态在搜索树内和状态在搜索树外。两个状态对应的策略分别是树内的确定性(最大化Q)策略和树外的默认(随机)策略。
随着不断地重复模拟,状态行为对的价值将得到持续地得到评估。同时基于
上述方法就相当在某一个状态st时,针对模拟的经历使用蒙特卡罗控制来寻找以当前状态
围棋中的蒙特卡罗树搜索 MCTS in Go
围棋是诞生于2500年前的古代东方的一种益智游戏,它被认为是经典棋盘类游戏中最难的游戏,同时对于计算机领域也是AI领域的一个巨大挑战,传统的暴力搜索算法无法战胜人类高级棋手一度使得人们相信围棋更多地要依靠人的直觉和灵感。关于围棋的规则这里做一个简单的介绍:
围棋游戏通常在一个19*19、13*13或9*9的方格棋盘中,有黑白两种颜色的棋子,交手双方交替落棋,棋只能落在棋盘中线线交点上。被一方完全围住的棋需要从棋盘中移除。计算胜负时看哪一方棋子围住的区域大。下图展示的是一个9*9棋盘的早期(左)和最终结局(右,白棋获胜)。
如果从强化学习的角度来看待围棋问题,可以认为棋盘中的每一个时刻黑白棋的位置构成一个状态
这是一个双方博弈的过程,策略可以被看成是双方策略的联合:
通常在针对双方博弈的游戏中,基于某一方(黑方)来设计某一状态的价值函数:
策略π下每一个状态的最优价值是:该策略下从白棋最小化状态价值列表中找到一个相对最大的价值:
第十讲会详细解释该公式。
蒙特卡罗树搜索详细分解
下图简单解释了简单蒙特卡罗评估的过程:
从某一个状态开始,在当前模拟策略下产生了4个完整的Episodes,根据这4个完整Episode最终的即时奖励得到针对初始状态时的4个收获值,分别为1,1,0,0。平均后得到该策略下初始状态的价值估计为0.5。简单蒙特卡罗评估是了解一个状态价值的一个非常方便的方法,在这种情况下使用价值函数的近似来评估一个状态的价值是非常困难的,得到的结果也不一定理想。
我们现在结合实例和示意图,通过观察蒙特卡罗树搜索算法的几次迭代过程来实际了解该算法的运作过程。
第一次迭代:如下图所示,五角形表示的状态是个体第一次访问的状态,也是第一次被录入搜索树的状态。我们构建搜索树:将当前状态录入搜索树中。使用基于蒙特卡罗树搜索的策略(两个阶段),由于当前搜索树中只有当前状态,全程使用的应该是一个搜索第二阶段的默认随机策略,基于该策略产生一个直到终止状态的完整Episode。图中那些菱形表示中间状态和方格表示的终止状态,在此次迭代过程中并不录入搜索树。终止状态方框内的数字1表示(黑方)在博弈中取得了胜利。此时我们就可以更新搜索树种五角形的状态价值,以分数1/1表示从当前五角形状态开始模拟了一个Episode,其中获胜了1个Episode。这是第一次迭代过程。
第二次迭代:如下图所示,当前状态仍然是树内的圆形图标指示的状态,从该状态开始决定下一步动作。根据目前已经访问过的状态构建搜索树,依据模拟策略产生一个行为模拟进入白色五角形表示的状态,并将该状态录入搜索树,随后继续该次模拟的对弈直到Episode结束,结果显示黑方失败,因此我们可以更新新加入搜索树的五角形节点的价值为0/1,而搜索树种的圆形节点代表的当前状态其价值估计为1/2,表示进行了2次模拟对弈,赢得了1次,输了1次。第二次迭代结束。
经过前两次的迭代,当位于当前状态(黑色圆形节点)时,当前策略会认为选择某行为进入上图中白色五角形节点状态对黑方不利,策略将得到更新:当前状态时会个体会尝试选择其它行为。
第三次迭代:如下图,假设选择了一个行为进入白色五角形节点状态,将该节点录入搜索树,模拟一次完整的Episode,结果显示黑方获胜,此时更新新录入节点的状态价值为1/1,同时更新其上级节点的状态价值,这里需要更新当前状态的节点价值为2/3,表明在当前状态下已经模拟了3次对弈,黑方获胜2次。
随着迭代次数的增加,在搜索树里录入的节点开始增多,树内每一个节点代表的状态其价值数据也越来越丰富。在搜索树内依据Ɛ-greedy策略会使得当个体出于当前状态(圆形节点)时更容易做出到达图中五角形节点代表的状态的行为。
第四次迭代:如下图,当个体位于当前(圆形节点)状态时,树内策略使其更容易进入左侧的蓝色圆形节点代表的状态,此时录入一个新的节点(五角形节点),模拟完Episode提示黑方失败,更新该节点以及其父节点的状态价值。该次迭代结束。
第五次迭代:如下图,更新后的策略使得个体在当前状态时仍然有较大几率进入其左侧圆形节点表示的状态,在该节点,个体避免了进入刚才失败的那次节点,录入了一个新节点,基于模拟策略完成一个完整Episode,黑方获得了胜利,同样的更新搜索树内相关节点代表的状态价值。
如此反复,随着迭代次数的增加,当个体处于当前状态时,其搜索树将越来越深,那些能够引导个体获胜的搜索树内的节点将会被充分的探索,其节点代表的状态价值也越来越有说服力;同时个体也忽略了那些结果不好的一些节点(上图中当前状态右下方价值估计为0/1的节点)。需要注意的是,仍然要对这部分节点进行一定程度的探索已确保这些节点不会被完全忽视。
同样,随着迭代次数的增加,搜索树内的节点越来越多,代表着搜索树外的节点将逐渐减少,这意味着在模拟Episode的过程中随机策略发生的情况也越来越少。个体最终会得到一个基于当前状态一个非常有指导意义的搜索树。不过即时个体不能充分探索许多状态,少量的随机行为并不会影响个体整体的决策效果。
为什么蒙特卡罗树搜索会有效呢?这得益于其多方面的优点:
蒙特卡罗树搜索的优点 Advantages of MC Tree Search
首先蒙特卡罗树搜索是具有高度选择性的(Highly selective)、基于导致越好结果的行为越被优先选择(best-first)的一种搜索方法;其次它可以动态的评估各状态的价值,这种动态更新价值的方法与动态规划不同,后者聚焦于整个状态空间,而蒙特卡罗树搜索是立足于当前状态,动态更新与该状态相关的状态价值;它使用采样避免了维度灾难;同样由于它仅依靠采样,因此适用于那些“黑盒”模型(black-box models),上述这些优点决定了其是可以高效计算的、不受时间限制以及可以并行处理的。
时序差分搜索 Temporal-Difference Search
前面讲解的都是蒙特卡罗搜索,它其实只是规划方法里众多有效算法中的一种,实际上不应仅局限于特定的搜索树结构、模拟策略及蒙特卡罗搜索算法。解决这一大类问题的关键理念在于“前向搜索(forward sarch)”和“采样(sampling)”。正确运用这两点,个体可以到达状态空间里许多非常优秀的状态,在此基础上把强化学习的一些不基于模型的算法应用到这些模拟产生的好的状态中,最终得到一个较优秀的策略。
如果将其他强化学习算法应用于基于模拟的搜索,可以得到诸如TD搜索,SARSA搜索等其他搜索方法。如果说蒙特卡罗树搜索是对从当前状态开始的一个子MDP问题应用蒙特卡罗控制,那么TD搜索可以被看成时对从当前状态开始的一个字MDP问题应用SARSA学习。就像在不基于模型的强化学习里TD学习相比MC学习有众多优点一样,在基于模拟的搜索时,TD搜索多数时候也是优于MC搜索的,特别是TD(λ)搜索。这主要是因为使用引导(bootstrapping)数据对解决基于模拟的搜索产生的子MDP问题同样是有积极意义的。
对于TD搜索,其大体过程如下:
1. 从当前实际状态
2. 对搜索树内的每一个节点(状态行为对),估计其价值Q(s,a)
3. 对于模拟过程中的每一步,使用Sarsa学习更新行为价值:
4. 基于Q值,使用Ɛ-greedy或其他探索方法来生成行为。
在上述过程中,也可以使用针对Q的近似的函数式表达。
相比于MC搜索,TD搜索不必模拟Episode到终止状态,其仅聚焦于某一个节点的状态,这对于一些有回路或众多旁路的节点来说更加有意义,这是因为在使用下一个节点估计当前节点的价值时,下一个节点的价值信息可能已经是经过充分模拟探索了的,在此基础上更新的当前节点价值会更加准确。
Dyna-2 算法
我们再次回到Dyna算法中来。Dyna算法一边从实际经历中学习,一遍从模拟的经历中学习。如果我们把基于模拟的前向搜索应用到Dyna算法中来,就变成了Dyna-2算法。使用该算法的个体维护了两套特征权重:一套反映了个体的长期记忆,该记忆是从真实经历中使用TD学习得到,它反映了个体对于某一特定强化学习问题的普遍性的知识、经验;另一套反映了个体的短期记忆,该记忆从基于模拟经历中使用TD搜索得到,它反映了个体对于某一特定强化学习在特定条件(比如某一Episode、某一状态下)下的特定的、局部适用的知识、经验。Dyna-2算法最终将两套特征权重下产生的价值综合起来进行决策,以期得到更优秀的策略。
下图展示了在围棋游戏中,使用不同算法的效果比较:
该图纵坐标表示的不同算法与使用基准算法(GnuGo)进行围棋对弈的获胜率,横坐标应该是个体实际或模拟运行的步数。黑色虚线是蒙特卡罗树搜索的表现。绿色是仅针对真实经历进行TD学习得到的结果,其效果非常不好。红色曲线表示的是TD搜索的效果,在围棋程序中表现比MC搜索要好一些。表现最好的是把TD学习和TD搜索结合起来的Dyna-2算法。
本讲完。
作者简介:
叶强,眼科专家,上海交通大学医学博士, 工学学士,现从事医学+AI相关的研究工作。
特注:
请登录www.zhuanzhi.ai或者点击阅读原文,
顶端搜索“强化学习” 主题,直接获取查看获得全网收录资源进行查看, 涵盖论文等资源下载链接,并获取更多与强化学习的知识资料!如下图所示。
此外,请关注专知公众号(扫一扫最下面专知二维码,或者点击上方蓝色专知),后台回复“强化学习” 就可以获取深度强化学习知识资料全集(论文/代码/教程/视频/文章等)的pdf文档!
欢迎转发到你的微信群和朋友圈,分享专业AI知识!
请感兴趣的同学,扫一扫下面群二维码,加入到专知-深度强化学习交流群!
请扫描小助手,加入专知人工智能群,交流分享~
获取更多关于机器学习以及人工智能知识资料,请访问www.zhuanzhi.ai, 或者点击阅读原文,即可得到!
-END-
欢迎使用专知
专知,一个新的认知方式!目前聚焦在人工智能领域为AI从业者提供专业可信的知识分发服务, 包括主题定制、主题链路、搜索发现等服务,帮你又好又快找到所需知识。
使用方法>>访问www.zhuanzhi.ai, 或点击文章下方“阅读原文”即可访问专知
中国科学院自动化研究所专知团队
@2017 专知
专 · 知
关注我们的公众号,获取最新关于专知以及人工智能的资讯、技术、算法、深度干货等内容。扫一扫下方关注我们的微信公众号。
点击“阅读原文”,使用专知!